<?php

// +----------------------------------------------------------------------

// | OneThink [ WE CAN DO IT JUST THINK ]

// +----------------------------------------------------------------------

// | Copyright (c) 2013 http://www.onethink.cn All rights reserved.

// +----------------------------------------------------------------------

// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )

// +----------------------------------------------------------------------

// | Author: liu21st <liu21st@gmail.com>

// +----------------------------------------------------------------------



namespace Common\Api;

class UserApi {

    /**

     * 检测用户是否登录

     * @return integer 0-未登录，大于0-当前登录用户ID

     */

    public static function is_login(){

        $user = session('user_auth');

        if (empty($user)) {

            return 0;

        } else {

            return session('user_auth_sign') == data_auth_sign($user) ? $user['uid'] : 0;

        }

    }



    /**

     * 检测当前用户是否为管理员

     * @return boolean true-管理员，false-非管理员

     */

    public static function is_administrator($uid = null){

        $uid = is_null($uid) ? is_login() : $uid;

        return $uid && (intval($uid) === C('USER_ADMINISTRATOR'));

    }



    /**

     * 根据用户ID获取用户名

     * @param  integer $uid 用户ID

     * @return string       用户名

     */

    public static function get_username($uid = 0){

        static $list;

        if(!($uid && is_numeric($uid))){ //获取当前登录用户名

            return session('user_auth.username');

        }



        /* 获取缓存数据 */

        if(empty($list)){

            $list = S('sys_active_user_list');

        }



        /* 查找用户信息 */

        $key = "u{$uid}";

        if(isset($list[$key])){ //已缓存，直接使用

            $name = $list[$key];

        } else { //调用接口获取用户信息

            $User = new User\Api\UserApi();

            $info = $User->info($uid);

            if($info && isset($info[1])){

                $name = $list[$key] = $info[1];

                /* 缓存用户 */

                $count = count($list);

                $max   = C('USER_MAX_CACHE');

                while ($count-- > $max) {

                    array_shift($list);

                }

                S('sys_active_user_list', $list);

            } else {

                $name = '';

            }

        }

        return $name;

    }



    /**

     * 根据用户ID获取用户昵称

     * @param  integer $uid 用户ID

     * @return string       用户昵称

     */

    public static function get_nickname($uid = 0){

        static $list;

        if(!($uid && is_numeric($uid))){ //获取当前登录用户名

            return session('user_auth.username');

        }



        /* 获取缓存数据 */

        if(empty($list)){

            $list = S('sys_user_nickname_list');

        }



        /* 查找用户信息 */

        $key = "u{$uid}";

        if(isset($list[$key])){ //已缓存，直接使用

            $name = $list[$key];

        } else { //调用接口获取用户信息

            $info = M('Member')->field('nickname')->find($uid);

            if($info !== false && $info['nickname'] ){

                $nickname = $info['nickname'];

                $name = $list[$key] = $nickname;

                /* 缓存用户 */

                $count = count($list);

                $max   = C('USER_MAX_CACHE');

                while ($count-- > $max) {

                    array_shift($list);

                }

                S('sys_user_nickname_list', $list);

            } else {

                $name = '';

            }

        }

        return $name;

    }

}